package com.wolfeyes.common.constant;

/**
 * @description 以HTTP状态码为例，为了更加清晰的表述和区分状态码的含义，HTTP状态做了分段：
 * @description 1XX 信息，服务器收到请求，需要请求者继续执行操作
 * @description 2XX 成功，操作被成功接收并处理
 * @description 3XX 重定向，需要进一步的操作以完成请求
 * @description 4XX 客户端错误，请求包含语法错误或无法完成请求
 * @description 5XX 服务器错误，服务器在处理请求的过程中发生了错误
 * @description 10000-19999 参数校验错误
 * @description 20000-29999 A步骤执行失败
 * @description 30000-39999 B步骤执行失败
 * @description 对于后端开发来说，我们通常见到的都是：
 * @description 2XX状态码，比如200->请求成功，
 * @description 5XX状态码，比如502->服务器异常，通常就是服务没正常运行，或者代码执行出错
 * @description 通过状态码即可初步判断问题原因，HTTP状态的设计思路值得借鉴。
 * @see Talk is cheap, Show me the code. -- Linus Torvalds
 * @title 定义常量记录-Http网络状态码
 * @author yanyljava
 * @email yanyljava@qq.com
 * @create 2022-01-07 21:25
 */
public class HttpStatusConstants {
	
	/**
	 * 成功
	 */
	public static final int SUCCESS = 200;

	/**
	 * 错误的请求
	 */
	public static final int BAD_REQUEST = 400;

	/**
	 * 访问受限，授权过期
	 */
	public static final int FORBIDDEN = 403;

	/**
	 * 资源，服务未找到
	 */
	public static final int NOT_FOUND = 404;

	/**
	 * 系统内部错误
	 */
	public static final int ERROR = 500;
	
	/**
	 * 系统发生未知异常
	 */
	public static final int UNKNOWN_EXCEPTION = 99999;
	

	/**
	 * 操作成功
	 */
	//public static final int SUCCESS = 200;

	/**
	 * 对象创建成功
	 */
	public static final int CREATED = 201;

	/**
	 * 请求已经被接受
	 */
	public static final int ACCEPTED = 202;

	/**
	 * 操作已经执行成功，但是没有返回数据
	 */
	public static final int NO_CONTENT = 204;

	/**
	 * 资源已被移除
	 */
	public static final int MOVED_PERM = 301;

	/**
	 * 重定向
	 */
	public static final int SEE_OTHER = 303;

	/**
	 * 资源没有被修改
	 */
	public static final int NOT_MODIFIED = 304;

	/**
	 * 参数列表错误（缺少，格式不匹配）
	 */
	//public static final int BAD_REQUEST = 400;

	/**
	 * 访问受限，未授权
	 */
	public static final int UNAUTHORIZED = 401;

	/**
	 * 访问受限，授权过期
	 */
	//public static final int FORBIDDEN = 403;

	/**
	 * 资源，服务未找到
	 */
	//public static final int NOT_FOUND = 404;

	/**
	 * 不允许的http方法
	 */
	public static final int BAD_METHOD = 405;

	/**
	 * 资源冲突，或者资源被锁
	 */
	public static final int CONFLICT = 409;

	/**
	 * 不支持的数据，媒体类型
	 */
	public static final int UNSUPPORTED_TYPE = 415;

	/**
	 * 系统内部错误
	 */
	//public static final int ERROR = 500;

	/**
	 * 接口未实现
	 */
	public static final int NOT_IMPLEMENTED = 501;
	
	/**
	 * @description 返回码定义
	 * 规定:
	 * #1表示成功
	 * #1001～1999 区间表示参数错误
	 * #2001～2999 区间表示用户错误
	 * #3001～3999 区间表示接口异常
	 */
    /* 参数错误：1000～1999 */
	//参数无效
	public static final int PARAM_NOT_VALID = 1001;
	//参数为空
	public static final int PARAM_IS_BLANK = 1002;
	//参数类型错误
	public static final int PARAM_TYPE_ERROR = 1003;
	//参数缺失
	public static final int PARAM_NOT_COMPLETE = 1004;

    /* 用户错误 */
	//用户未登录
	public static final int USER_NOT_LOGIN = 2001;
	//账号已过期
	public static final int USER_ACCOUNT_EXPIRED = 2002;
	//密码错误
	public static final int USER_CREDENTIALS_ERROR = 2003;
	//密码过期
	public static final int USER_CREDENTIALS_EXPIRED = 2004;
	//账号不可用
	public static final int USER_ACCOUNT_DISABLE = 2005;
	//账号被锁定
	public static final int USER_ACCOUNT_LOCKED = 2006;
	//账号不存在
	public static final int USER_ACCOUNT_NOT_EXIST = 2007;
	//账号已存在
	public static final int USER_ACCOUNT_ALREADY_EXIST = 2008;
	//账号下线
	public static final int USER_ACCOUNT_USE_BY_OTHERS = 2009;

    /* 业务错误 */
	//没有权限
	public static final int NO_PERMISSION = 3001;
	
    /* 默认失败 */
	//失败
	public static final int COMMON_FAIL = 999;
	
}


